<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>商品解构筛选</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .产品列表 {
            width: 990px;
            margin: 0 auto;
            display: flex;
            flex-wrap: wrap;
        }

        .产品 {
            width: 240px;
            margin-left: 10px;
            padding: 20px 30px;
            transition: all .5s;
            margin-bottom: 20px;
        }

        .产品:nth-child(4n) {
            margin-left: 0;
        }

        .产品:hover {
            box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
            transform: translate3d(0, -4px, 0);
            cursor: pointer;
        }

        .产品 img {
            width: 100%;
        }

        .产品 .产品名称 {
            font-size: 18px;
            margin-bottom: 10px;
            color: #666;
        }

        .产品 .产品价格 {
            font-size: 22px;
            color: firebrick;
        }

        .产品 .产品价格::before {
            content: "¥";
            font-size: 14px;
        }

        .价格筛选 {
            display: flex;
            width: 990px;
            margin: 0 auto;
            padding: 50px 30px;
        }

        .价格筛选 a {
            padding: 10px 20px;
            background: #f5f5f5;
            color: #666;
            text-decoration: none;
            margin-right: 20px;
        }

        /* active,点击激活  focus,点击获取焦点事件 */
        .价格筛选 a:active,
        .价格筛选 a:focus {
            background: #05943c;
            color: #fff;
        }
    </style>
</head>
<body>

<div class="价格筛选">
    <a data-序列号="1" href="javascript:;">0-100元</a> <!-- data-序列号, 是自定义属性. 下面JS里要读取 值 -->
    <a data-序列号="2" href="javascript:;">100-300元</a>
    <a data-序列号="3" href="javascript:;">300元以上</a>
    <a data-序列号="4" href="javascript:;">全部区间</a>
</div>
<div class="产品列表">
    <!-- <div class="产品">
      <img src="" alt="">
      <p class="产品名称"></p>
      <p class="产品价格"></p>
    </div> -->
</div>

<!--
案例需求：
①：渲染数据列表
②：根据选择不同条件显示不同商品 (价格筛选)
-->
<script>
    const 后台数据_商品清单 = [
        {
            id: '4001172',
            产品名称: '称心如意手摇咖啡磨豆机咖啡豆研磨机',
            产品价格: '289.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/84a59ff9c58a77032564e61f716846d6.jpg',
        },
        {
            id: '4001594',
            产品名称: '日式黑陶功夫茶组双侧把茶具礼盒装',
            产品价格: '288.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/3346b7b92f9563c7a7e24c7ead883f18.jpg',
        },
        {
            id: '4001009',
            产品名称: '竹制干泡茶盘正方形沥水茶台品茶盘',
            产品价格: '109.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/2d942d6bc94f1e230763e1a5a3b379e1.png',
        },
        {
            id: '4001874',
            产品名称: '古法温酒汝瓷酒具套装白酒杯莲花温酒器',
            产品价格: '488.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/44e51622800e4fceb6bee8e616da85fd.png',
        },
        {
            id: '4001649',
            产品名称: '大师监制龙泉青瓷茶叶罐',
            产品价格: '139.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/4356c9fc150753775fe56b465314f1eb.png',
        },
        {
            id: '3997185',
            产品名称: '与众不同的口感汝瓷白酒杯套组1壶4杯',
            产品价格: '108.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/8e21c794dfd3a4e8573273ddae50bce2.jpg',
        },
        {
            id: '3997403',
            产品名称: '手工吹制更厚实白酒杯壶套装6壶6杯',
            产品价格: '99.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/af2371a65f60bce152a61fc22745ff3f.jpg',
        },
        {
            id: '3998274',
            产品名称: '德国百年工艺高端水晶玻璃红酒杯2支装',
            产品价格: '139.00',
            产品图片: 'https://yanxuan-item.nosdn.127.net/8896b897b3ec6639bbd1134d66b9715c.jpg',
        },
    ]

    function 渲染_商品列表(数组) {
        // 先声明一个空字符串
        let 字符串 = ''
        // forEach方法遍历数组
        数组.forEach(function (元素) {
            // 遍历的 数组元素,是对象
            const {产品名称, 产品价格, 产品图片} = 元素 // 对象解构赋值
            // 依次,拼接字符串.  注意:引号是 反引号
            字符串 += `
            <div class="产品">
              <img src="${产品图片}" alt="">
              <p class="名称">${产品名称}</p>
              <p class="价格">${产品价格}</p>
            </div>
            `
        })
        // 获取DOM元素
        const 产品列表 = document.querySelector('.产品列表')
        产品列表.innerHTML = 字符串 // 把字符串信息修改到,  <div class="产品列表"> 里面去
    }

    // 调用函数
    渲染_商品列表(后台数据_商品清单) // 把后台数据,传参


    // 价格过滤筛选 商品
    // 获取DOM元素
    const 价格筛选 = document.querySelector('.价格筛选')

    // 事件委托监控 点击事件
    价格筛选.addEventListener('click', 事件对象 => { // 箭头函数写法
        // 事件对象.target.dataset.序列号  // 取标签里,自定义属性
        const {tagName, dataset: {序列号}} = 事件对象.target // 对象解构, target里属性值,赋值给变量.  dataset还是个对象,取属性'序列号'的值

        // 事件对象.target.tagName,  由于上面对象解构了,简化
        if (tagName === 'A') {

            // 这个数组用来存储,满足条件筛选返回的数组, 用来渲染页面函数的 参数数组
            let 筛选后的数组 = []

            if (序列号 === '1') {
                // filter方法,筛选满足条件的数组,返回新数组    箭头函数写法(只有一个参数和只有一行代码,可以不加括号)
                筛选后的数组 = 后台数据_商品清单.filter(元素 => 元素.产品价格 > 0 && 元素.产品价格 <= 100)
                // 调用函数,重新渲染页面
                渲染_商品列表(筛选后的数组)
            }
            if (序列号 === '2') {
                筛选后的数组 = 后台数据_商品清单.filter(元素 => 元素.产品价格 > 100 && 元素.产品价格 <= 300)
                渲染_商品列表(筛选后的数组)
            }
            if (序列号 === '3') {
                筛选后的数组 = 后台数据_商品清单.filter(元素 => 元素.产品价格 > 300)
                渲染_商品列表(筛选后的数组)
            }
            if (序列号 === '4') {
                // 由于这里是,全部价格区间,所以不用筛选了,直接 完整数组 传参
                渲染_商品列表(后台数据_商品清单)
            }
        }
    })
</script>

</body>
</html>